package sf.database.template;

import sf.database.jdbc.sql.SQLContext;

import java.util.Map;

/**
 * 模板操作接口
 */
public interface TemplateHandler {
    /**
     *
     */
    void loadAllSQL();

    /**
     * @param sqlId
     * @return
     */
    String getSQL(String sqlId);

    SQLContext getParsedSql(String sqlId, String dbType, Map<String, Object> parameters);

    /**
     * 根据sql模板内容渲染
     * @param sqlSource
     * @param parameters
     * @return
     */
    SQLContext getParsedSqlSource(String sqlSource, Map<String, Object> parameters);

    /**
     * @param sqlId
     * @param dbType
     * @param parameters
     * @return
     */
    SQLContext getParsedPageSql(String sqlId, String dbType, Map<String, Object> parameters);

    /**
     * @param sqlSource
     * @param parameters
     * @return
     */
    SQLContext getParsedPageSqlSource(String sqlSource, Map<String, Object> parameters);


    /**
     * @param sqlId
     * @param dbType
     * @param parameters
     * @return
     */
    SQLContext getParsedPageCountSql(String sqlId, String dbType, Map<String, Object> parameters);

    /**
     * 分页使用 查询总数
     * @param sqlSource
     * @param parameters
     * @return
     */
    SQLContext getParsedPageCountSqlSource(String sqlSource, Map<String, Object> parameters);

    /**
     * @param sqlId
     * @param dbType
     * @param parameters
     * @return
     */
    SQLContext getParsedPageListSql(String sqlId, String dbType, Map<String, Object> parameters);

    /**
     * 分页使用 查询列表
     * @param sqlSource
     * @param parameters
     * @return
     */
    SQLContext getParsedPageListSqlSource(String sqlSource, Map<String, Object> parameters);
}
